package com.esteel.settlement.pa.packet;

import java.util.Date;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.NotEmpty;

/**
 * 应答包：监管系统－>柜台、网银 监管账户信息查询 zhouwentong
 */
@XmlRootElement(name = "Result")
@XmlAccessorType(XmlAccessType.FIELD)
public class RspBP1021 extends Answer {

	private static final long serialVersionUID = -7823684824063678865L;
	// 汇总账号总数
	@XmlElement(name = "RecordNum")
	private int recordNum;
	// 所属交易网代码
	@XmlElement(name = "TranWebCode")
	@Length(max = 4)
	@NotEmpty
	private String tranWebCode;
	// 交易网名称
	@XmlElement(name = "TranWebCode")
	@Length(max = 120)
	@NotEmpty
	private String tranWebName;
	// 资金汇总账号
	@XmlElement(name = "AcctId")
	@Length(max = 32)
	@NotEmpty
	private String acctId;
	// 户名
	@XmlElement(name = "AcctName")
	@Length(max = 120)
	@NotEmpty
	private String acctName;
	// 证件类型
	@XmlElement(name = "IdType")
	private int idType;
	// 证件号码
	@XmlElement(name = "IdCode")
	@Length(max = 20)
	@NotEmpty
	private String idCode;
	// 网银用户名
	@XmlElement(name = "WebName")
	@Length(max = 30)
	@NotEmpty
	private String webName;
	// 网银客户号
	@XmlElement(name = "WebCustId")
	@Length(max = 30)
	@NotEmpty
	private String webCustId;
	// 手机号码1
	@XmlElement(name = "MobilePhone1")
	@Length(max = 12)
	private String mobilePhone1;
	// 手机号码2
	@XmlElement(name = "MobilePhone2")
	@Length(max = 12)
	private String mobilePhone2;
	// 邮箱1
	@XmlElement(name = "EmailAddr1")
	@Length(max = 120)
	private String emailAddr1;
	// 邮箱2
	@XmlElement(name = "EmailAddr2")
	@Length(max = 120)
	private String emailAddr2;
	// 服务类型 5：存管服务
	@XmlElement(name = "FuncFlag")
	private int funcFlag;
	// 开立子账户方式 3：都可以
	@XmlElement(name = "OpenCustFlag")
	private int openCustFlag;
	// 币种 默认为RMB
	@XmlElement(name = "CcyCode")
	@Length(max = 3)
	@NotEmpty
	private String ccyCode;
	// 当前余额 当前存款的可用余额，与主机一致
	@XmlElement(name = "CurBalance")
	@Length(max = 15)
	@NotEmpty
	private double curBalance;
	// 子账户资金合计 普通子账户的总金额合计
	@XmlElement(name = "TotalAmount")
	private double totalAmount;
	// 可转出资金合计 手续费和利息子帐户的余额合计
	@XmlElement(name = "TranOutAmount")
	private double tranOutAmount;
	// 可用余额总计 普通子会员的可用余额合计
	@XmlElement(name = "TotalBalance")
	private double totalBalance;
	// 冻结金额总计 普通子会员的冻结金额总计
	@XmlElement(name = "TotalFreeze")
	private double totalFreeze;
	// 子账户总数 包括已销户的子账户
	@XmlElement(name = "CustTotal")
	private long custTotal;
	// 有效子账户数 不包括已销户的子账户
	@XmlElement(name = "CustAvailTotal")
	private long custAvailTotal;
	// 建立日期
	@XmlElement(name = "TranDate")

	private Date tranDate;

	public int getRecordNum() {
		return recordNum;
	}

	public String getTranWebCode() {
		return tranWebCode;
	}

	public String getTranWebName() {
		return tranWebName;
	}

	public String getAcctId() {
		return acctId;
	}

	public String getAcctName() {
		return acctName;
	}

	public int getIdType() {
		return idType;
	}

	public String getIdCode() {
		return idCode;
	}

	public String getWebName() {
		return webName;
	}

	public String getWebCustId() {
		return webCustId;
	}

	public String getMobilePhone1() {
		return mobilePhone1;
	}

	public String getMobilePhone2() {
		return mobilePhone2;
	}

	public String getEmailAddr1() {
		return emailAddr1;
	}

	public String getEmailAddr2() {
		return emailAddr2;
	}

	public int getFuncFlag() {
		return funcFlag;
	}

	public int getOpenCustFlag() {
		return openCustFlag;
	}

	public String getCcyCode() {
		return ccyCode;
	}

	public double getCurBalance() {
		return curBalance;
	}

	public double getTotalAmount() {
		return totalAmount;
	}

	public double getTranOutAmount() {
		return tranOutAmount;
	}

	public double getTotalBalance() {
		return totalBalance;
	}

	public double getTotalFreeze() {
		return totalFreeze;
	}

	public long getCustTotal() {
		return custTotal;
	}

	public long getCustAvailTotal() {
		return custAvailTotal;
	}

	public Date getTranDate() {
		return tranDate;
	}

	public void setRecordNum(int recordNum) {
		this.recordNum = recordNum;
	}

	public void setTranWebCode(String tranWebCode) {
		this.tranWebCode = tranWebCode;
	}

	public void setTranWebName(String tranWebName) {
		this.tranWebName = tranWebName;
	}

	public void setAcctId(String acctId) {
		this.acctId = acctId;
	}

	public void setAcctName(String acctName) {
		this.acctName = acctName;
	}

	public void setIdType(int idType) {
		this.idType = idType;
	}

	public void setIdCode(String idCode) {
		this.idCode = idCode;
	}

	public void setWebName(String webName) {
		this.webName = webName;
	}

	public void setWebCustId(String webCustId) {
		this.webCustId = webCustId;
	}

	public void setMobilePhone1(String mobilePhone1) {
		this.mobilePhone1 = mobilePhone1;
	}

	public void setMobilePhone2(String mobilePhone2) {
		this.mobilePhone2 = mobilePhone2;
	}

	public void setEmailAddr1(String emailAddr1) {
		this.emailAddr1 = emailAddr1;
	}

	public void setEmailAddr2(String emailAddr2) {
		this.emailAddr2 = emailAddr2;
	}

	public void setFuncFlag(int funcFlag) {
		this.funcFlag = funcFlag;
	}

	public void setOpenCustFlag(int openCustFlag) {
		this.openCustFlag = openCustFlag;
	}

	public void setCcyCode(String ccyCode) {
		this.ccyCode = ccyCode;
	}

	public void setCurBalance(double curBalance) {
		this.curBalance = curBalance;
	}

	public void setTotalAmount(double totalAmount) {
		this.totalAmount = totalAmount;
	}

	public void setTranOutAmount(double tranOutAmount) {
		this.tranOutAmount = tranOutAmount;
	}

	public void setTotalBalance(double totalBalance) {
		this.totalBalance = totalBalance;
	}

	public void setTotalFreeze(double totalFreeze) {
		this.totalFreeze = totalFreeze;
	}

	public void setCustTotal(long custTotal) {
		this.custTotal = custTotal;
	}

	public void setCustAvailTotal(long custAvailTotal) {
		this.custAvailTotal = custAvailTotal;
	}

	public void setTranDate(Date tranDate) {
		this.tranDate = tranDate;
	}

	@Override
	protected String[] order() {
		String[] objs = { "recordNum", "tranWebCode", "tranWebName", "acctId", "acctName", "idType", "idCode", "webName", "webCustId", "mobilePhone1", "mobilePhone2", "emailAddr1", "emailAddr2",
				"funcFlag", "openCustFlag", "ccyCode", "curBalance", "totalAmount", "tranOutAmount", "totalBalance", "totalFreeze", "custTotal", "custAvailTotal", "tranDate", "reserve" };
		return objs;
	}

}
